package cn.itcast.nems.order.dto;

import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;

@Data
public class OrderMode implements Serializable {
    private String  id ;
    /**
     * 订单编号。编码规则：OD+YYMMDD+ ZEROFILL(MURMURHASH(UUID()),0,10) 示例：OD2308281693193454
     */
    private String orderNo;

    /**
     * 业务订单编号，需要接入方传递。要求主租户内唯一。
     */
    private String bizOrderNo;

    /**
     * 订单来源渠道id，来自于主数据
     */
    private Integer originChannelId;

    /**
     * 订单来源渠道名称，来自于主数据
     */
    private String originChannelName;

    /**
     * 客户ID：来自于SCRM。主租户唯一。后续不做变更。
     */
    private String customerId;

    /**
     * 用户账户ID：来自于统一用户中心下的账户ID。
     */
    private String accountId;

    /**
     * 业务日期：存在单据录入日期和实际业务发生日期不一致的情况。用来业务补录时记录实际发生日期。
     */
    private LocalDateTime bizDate;

    /**
     * 币种，直接“CNY”
     */
    private String currency;

    /**
     * 订单原金额总额。单位：分。
     */
    private Integer originalAmount;

    /**
     * 优惠总额。单位：分
     */
    private Integer discountAmount;

    /**
     * 应付金额=订单原金额-优惠总额。单位：分。
     */
    private Integer amountDue;

    /**
     * 已支付金额。单位：分。注：每次支付累计，退费不减！
     */
    private Integer paidAmount;

    /**
     * 付款类型，如先付费、后付费，来自于主数据
     */
    private Integer paymentTypeId;

    /**
     * 付款类型，如先付费、后付费，来自于主数据
     */
    private String paymentTypeName;

    /**
     * 最后一次付款时间，注：每次付款后更新
     */
    private LocalDateTime paymentDatetime;

    /**
     * 订单状态：待支付|PENDING，部分支付|PAYING，完成支付|PAID，已取消|CANCELED
     */
    private String state;

    /**
     * 发票状态：未开票|0、已开票|1。    注：发票更换不单独记录，如果需要查询发票是否更换，已发票开具明细表为准。
     */
    private Boolean invoiceFlag;

    /**
     * 收据状态：未开票|0、已开票|1
     */
    private Boolean receiptFlag;

    /**
     * 退费标志：没有退费|0、有退费|1
     */
    private Boolean refundFlag;

    /**
     * 已退金额总额。所有退费累加。单位：分
     */
    private Integer refundAmount;

    /**
     * 订单备注
     */
    private String remark;

    /**
     * 关联订单。如果两个订单之间有关系，则在此字段记录关联关系。如学籍管理场景下的升班、转班等。
     */
    private String associatedOrderId;

    /**
     * 创建订单的业务线，来自于主数据
     */
    private Integer businessLineId;

    /**
     * 创建订单的业务线，来自于主数据
     */
    private String businessLineName;
    /**
     * 学籍来源;枚举值：新报名｜NEW、升班｜RENEWAL、转班来｜TRANSFER、休学归来｜SUSPENSION_REENTRY、重读/留级｜REPETITION、出待定班｜DELAY_REENTRY
     */
    private String source ;
    /**
     * 订单创建时间
     */
    private LocalDateTime createdDatetime;
}
